package com.yupi.apiback.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yupi.apiback.model.dto.interfaceInfo.InterfaceAddRequest;
import com.yupi.apiback.model.dto.interfaceInfo.InterfaceInvokingRequest;
import com.yupi.apiback.model.dto.interfaceInfo.InterfacePageRequest;
import com.yupi.apiback.model.dto.interfaceInfo.InterfaceUpdateRequest;
import com.yupi.apiback.model.entity.InterfaceInfo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;


/**
 * @author yanghaifeng
 * @description 针对表【interface_info(接口信息)】的数据库操作Service
 * @createDate 2024-01-18 15:49:55
 */
public interface InterfaceInfoService extends IService<InterfaceInfo> {

    /**
     * 新增
     *
     * @param dto 接口信息
     * @return 是否成功
     */
    Boolean add(InterfaceAddRequest dto);


    /**
     * 删除
     *
     * @param id 接口Id
     * @return 是否成功
     */
    Boolean remove(Long id);

    /**
     * 修改
     *
     * @param dto 接口信息修改对象
     * @return 接口Id
     */
    Long edit(InterfaceUpdateRequest dto);

    /**
     * 查询接口信息详情
     *
     * @param id 接口Id
     * @return 接口信息
     */
    InterfaceInfo queryDetails(Long id);

    /**
     * 分页查询
     *
     * @param condition 搜索条件
     * @param page      分页对象
     * @param request   request
     * @return 接口信息
     */
    Page<InterfaceInfo> page(InterfacePageRequest condition, Page<InterfaceInfo> page, HttpServletRequest request);

    /**
     * 批量删除
     *
     * @param ids 接口Id集合
     * @return true：删除成功
     */
    Boolean removeList(List<Long> ids);


    /**
     * 接口上线
     *
     * @param id 接口Id
     * @return 是否成功
     */
    Boolean online(Long id);


    /**
     * 接口下线
     *
     * @param id 接口Id
     * @return 是否成功
     */
    Boolean offline(Long id);

    /**
     * 接口调用
     *
     * @param dto 接口调用请求
     * @param request
     * @return 接口响应结果
     */
    Object invoking(InterfaceInvokingRequest dto, HttpServletRequest request);
}

